/**
 * @file gjson_value.h
 * @brief the value of key-value 
 * @author JakeYang <add358@gmail.com>
 * @version 0.1
 * @date 2016-03-01
 */

#ifndef __GJSON_VALUE_H__
#define __GJSON_VALUE_H__

#include "gjson_base.h"

G_BEGIN_DECLS

typedef enum {
    GJSON_NOTHING,
    GJSON_NUMBER,
    GJSON_STRING,
    GJSON_BOOLEAN,
    GJSON_ARRAY,
    GJSON_OBJECT
}GJsonType;

typedef struct _GJsonValue GJsonValue;
struct _GJsonValue {
    GJsonType type;
    gpointer value;
};

/**
 * @brief g_json_value_parse    解析数组
 * @param d                     json数据
 * @return 成功返回json数组数据， 失败返回NULL
 */
extern GJsonValue *g_json_value_parse(GJsonData *d);

/**
 * @brief g_json_value_free 释放数组资源
 * @param v                 指向GJsonValue类型数据
 */
extern void g_json_value_free(gpointer v);

/**
 * @brief g_json_value_print    打印json数组数据
 * @param v                     指向数据数据
 * @param t                     保存打印信息
 */
extern void g_json_value_print(const GJsonValue *v, GJsonText *t);

G_END_DECLS

#endif /* end of include guard */
